The present invention relates to business process automation and management, and deals more particularly with the software development process for automation and management of business processes.
The Software Application Development Landscape
The last couple of decades have seen dramatic changes in the Application Development technology landscape. Application Development technologies have evolved considerably since the early days of computing. There have been major shifts in programming environments, architectures and methodologies as a result of the knowledge gained with each phase of evolution of the application development technologies. Simultaneously, there has been a pervasive impact of the Internet in terms of its demand for technologies and applications to meet the needs of electronic commerce and universal information access.
Changes in the Application Development Technology Landscape can be Organized Along Four Distinct themes.
The first major theme relates to the evolution of computing architecture. Computing architectures have evolved from a highly centralized computing environment (connected with non-intelligent display terminals) to client-server computing (with intelligent personal computers) to network centric architectures achieving greater scalability and flexibility.
The second major change relates to the increasing sophistication and structuring of programming environments. These programming environments have evolved from unstructured programming approaches to structured programming to object oriented approaches combined with the widespread adoption of Graphical User Interfaces (GUI).
The third major change has been the steady innovation in hardware technologies resulting in continual improvement in the price/performance ratio of computing hardware. Today, a low-cost server can be used to perform the function that would have required an expensive mainframe just 10 years ago.
The fourth major change is related to the increased adoption of disciplined methodologies aimed at reducing the software development lifecycle (SDLC) on the one hand and increasing the quality and predictability of software delivery on the other. Notable here is the emergence of the Capability Maturity Model (CMM) and the more recent emergence of Rational Unified Process (RUP) and the Unified Modeling Language (UML).
During the late 80s and early 90s, there was an unprecedented wave of adoption of client-server applications (such as Enterprise Resource Planning and Consumer Relationship Management) by a majority of large enterprises, often on a global scale. This adoption was based on a broad-based premise that this generation of applications was more flexible as compared to legacy applications and would therefore allow enterprises much greater flexibility in conducting their businesses.
As client-server applications were being deployed across enterprises, the shortcomings of the client-server architecture started surfacing. It was found that the client-server applications yielded heavy, unwieldy clients and the server side technologies were generally found wanting in terms of performance and scalability. While many server side technology vendors, both hardware and software, have responded to these concerns adequately, the relatively high maintenance associated with heavy client applications led to the recognition that a superior approach may be to evolve thinner clients and create additional architectural tiers to allow greater scalability with reduced maintenance.
More recently, in the last couple of years, the introduction of a network-centric computing paradigm with the now ubiquitous ‘browser’ and the promise of platform neutral computing with Java™ (and now C#) is leading to a newer generation of applications and technologies, e.g. mySAP™.
Impact of the Internet on Application Development
Quite apart from the impact that the commercialization of the Internet is having on Application Development technologies and applications, it is believed that the Internet has had the following three types of impacts on businesses in general—providing greater transparency in all aspects of commerce, providing the impetus for corporations to streamline internal processes and acting as a catalyst for the accelerated development of newer technologies to meet the needs of Internet commerce.
Clearly, the Internet has had a profound impact on every aspect of business and personal life. Notwithstanding the irrational exuberance that accompanied the first phase of widespread Internet adoption, it is believed that the Internet is a disruptive innovation that is causing profound changes in the way commerce is conducted.
The Software Development Lifecycle and Application Development
Software development has evolved from an idiosyncratic art to an engineering discipline. The days of learning the art from a master craftsman have given way to structure, standards and the disciplines akin to engineering science. A conventional SDLC is illustrated in FIG. 1 and is described below.
An SDLC consists of many stages as an idea gets converted into a software application. At each stage, output from the previous stage is translated to serve the purpose and audience of the current stage. These translations are necessary so that ultimately a translation capable of being acted on by a computer can be produced. With each successive translation, there is an obvious need to preserve full information and knowledge from the previous stage. At a minimum, this need creates a significant amount of overhead and also slows down the process.
Over the years, there has been a substantial amount of effort in making the SDLC effective, fast and predictable. Such efforts can be classified into two major categories. In the first category are the methodological approaches aimed at improving the communication and translation between the various stages of the lifecycle by standardizing them and at eliminating the redundancies across Application Development efforts. In the second category, automation approaches aimed at automating one or more stages of the SDLC are included.
The focus of the methodological approaches has been to evolve the SDLC to an engineering science to increase the predictability and reliability of software development, in general. Earlier methodologies prescribed a waterfall approach to software development, which effectively called for detailing all the requirements up front in order to create a stationery target for the developers. However, there has been overwhelming evidence that static, waterfall approach to software development does not yield successful results. More details on the methodological approaches are provided in ‘Decline and Fall of the American Programmer’, by Edward Yourdon, Prentice Hall, 1992.
The current belief is that an iterative and an object oriented approach for design and development holds the promise of yielding a more effective approach to Application Development.
As competing methodologies evolved with their proprietary models and deliverables, the Unified Modeling Language (UML) has gained momentum as a common modeling language, separate and independent of various proprietary methodologies. The purpose behind UML is to evolve a common modeling language without constraining the development of unique methodological approaches. More details on UML are provided in UML 1.4, Object Management Group, Needham, Mass.
Automation efforts largely began with automated code generation and testing tools. There are several effective automated testing tools available today. While these tools can reduce the physical testing effort significantly, they are still predicated on the creation of test cases, which, in itself is a tedious and a time consuming task. The focus of testing tools is on reducing the effort required for testing, especially for subsequent versions and releases, and not on eliminating the need for testing. Tools that attempt to automate the creation of test cases from requirements models are being developed nowadays. These sets of tools reduce the effort required to create the test cases.
There is a long history of automated code generation efforts with a variety of Computer Aided Systems Engineering (CASE) tools emerging in the 80s. These tools, however, did not achieve widespread adoption as they were based on relatively weak conceptual models. More recently, there has been a revival in such tools in the context of a more robust methodological basis (for example, the UML). Recent efforts have focused on encapsulating and implementing UML compatible tools. Some examples of such efforts have resulted in solutions such as Togethersoft®, Rational Rose™ and Neuvis.
Current Issues in Application Development
While today's Application Development technologies are clearly a significant improvement over technologies 5 to 10 years ago, several fundamental issues such as time to market, the lack of a process-centric approach, the need to cope with the rapid changes in technology environments and standards, the availability of skilled resources, and others still present significant challenges.
Time to Market
The time to market is probably the most vexing of all the issues. The speed with which applications are built has always been a thorny issue in computing in general. Multi-year Application Development efforts were not uncommon in large enterprises. However, such durations have become unacceptable as they put organizations at a serious disadvantage.
Businesses have become much more dynamic, global and require the ability to be mobile and conduct business transactions anywhere and anytime. Such demands have accentuated the time to market issue even more in the last several years. The commonly held view among industry analysts is that companies must be able to create and evolve business processes and applications in response to rapid changes in the industry or customer demand in order to thrive and/or survive. Traditional development methodologies cannot produce applications or their modifications fast enough.
Thus, there is a need for Application Development cycles not only to be rapid but also flexible so that changes could be made equally rapidly.
Function-Centric Versus Process-Centric Focus
There is another major issue that Application Development technologies have not yet addressed. Most approaches to Application Development are functionally oriented. Process, often thought of as workflow, is mistakenly viewed as distinct and separate from functions or tasks. This is a major weakness in the current approaches.
Businesses can be viewed simply as a collection of business processes. A business process is a set of interrelated tasks that are performed in some order by a combination of humans and machines. A process can typically involve one or more functions. A business's objective is to maintain business processes at optimal levels. Most Application Development technologies do not provide an environment that promotes a process centric development strategy. They either tend to be user-centric or function-centric. This invariably leads to an inability to deal with business process changes and probably is the single greatest source of inflexibility in current tools.
Resource Availability
The third major issue with Application Development is the availability of trained resources. There is a general shortage of adequately trained resources and this greatly contributes to the delays and failures in Application Development projects commonly experienced by organizations. Compounding this issue is the rapid obsolescence of skill sets with newer technologies. Just a few years ago, C++ programmers were sought after and now they have to retool themselves to be Java™ programmers. The rate at which new skills get absorbed to create a critical mass of appropriate resources is much slower than the demand for such resources.
Even though the subsequent slow down in the U.S. economy and the slower proliferation of e-commerce than originally envisioned has alleviated the resource shortage, it is still acute and an endemic issue as technology evolves.
Heterogeneity and Rate of Change in Technology Environments
In the last two decades, we have seen a dramatic increase in the rate at which new products and technologies have been introduced. The commercialization of the Internet has also served as an added stimulus in this regard. The heterogeneity in the technology infrastructure is often a major issue in most corporations and often influences their purchasing decision in favor of one technology over another. A heterogeneous infrastructure introduces additional overhead and yet, the organization has to balance a unified infrastructure with availability of the desired functionality on that infrastructure.
In the 80s, organizations were faced with the task of having to choose client and server operating systems. Organizations were faced with the choice of choosing a platform that will survive and keep pace with their needs. Today, that market seems somewhat less fragmented with Windows™ holding a very large market share in the client side, and a mix of Windows™ and Unix™ on the server side. Similar choices have to be made on the hardware side.
The issues today seem to have shifted to Application Development technologies. There are competing development standards (e.g., J2EE™, .NET), messaging vendors, and databases to choose from. There are also the constantly evolving architectural standards, issues of flexibility and integration with legacy applications. Technology organizations have to constantly evolve a migration strategy maintaining a balance between what they already have and the new developments with future benefits.